package com.fengxing.ams.web.facade.intf;

import java.io.IOException;
import java.util.Collection;
import java.util.List;
import java.util.Map;

import org.apache.http.HttpException;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

import com.fengxing.ams.web.facade.mouble.batchline.BatchLineVO;
import com.fengxing.ams.web.facade.mouble.college.CollegeVO;
import com.fengxing.ams.web.facade.mouble.luqu.LuQuVO;
import com.fengxing.ams.web.facade.mouble.luqu.MajorEnrollVO;
import com.fengxing.ams.web.facade.mouble.luqu.MajorVO;
import com.fengxing.ams.web.facade.mouble.luqu.ParamVO;
import com.fengxing.ams.web.facade.mouble.realtime.RealtimeStudentVO;
import com.fengxing.ams.web.facade.mouble.realtime.SchoolVO2;
import com.fengxing.ams.web.facade.mouble.score.ScoreVO;
import com.fengxing.ams.web.facade.mouble.timu.DaAnVO;
import com.fengxing.ams.web.facade.mouble.timu.TiMuVO;
import com.fengxing.ams.web.facade.mouble.user.MenuVO;
import com.fengxing.ams.web.facade.mouble.user.ResetTokenVO;
import com.fengxing.ams.web.facade.mouble.user.UserVO;

public interface IUserFacade {
	
	UserVO findOneById(Long id);
	
	UserVO login(UserVO userVO);
	
	void updateUserLoginInfo(Long id);
	
	UserVO userLogin(UserVO userVO);

	void saveUser(UserVO user);

	UserVO findUserById(Long id);
	
	UserVO findUserByEmail(String email);

	void updateUser(UserVO user);

	void deleteById(Long id);

	UserVO signUp(UserVO userVO);

	Page<UserVO> getUserInfos(Collection<UserVO> users, Pageable pageable);

	Page<UserVO> getUserInfo(UserVO user, Pageable pageable);

	void updateUserInfo(UserVO userVO);

	List<LuQuVO> getLuQuInfo(ParamVO paramVO, Integer year);

	List<BatchLineVO> getBatchLineList();

	List<BatchLineVO> getBatchLine(Integer year, String type);

	List<TiMuVO> getTiMuList();

	DaAnVO getDaAn(String value);

	List<LuQuVO> getLuquXinxiAllYear(ParamVO paramVO);

	Map<Integer, CollegeVO> getCollegeBaseMap();

	Map<Integer, MajorVO> getMajorBaseMap();

	List<MajorEnrollVO> getMajorEnrollList(Integer college_id, String major_id,
			String batch, String subject);

	ScoreVO getRanking(int i, String subject, Integer score);

	ScoreVO getRankingByRanking(Integer year, String subject, Integer ranking);

	List<MajorEnrollVO> getMajorEnrollListByParamVO(ParamVO paramVO);
	
	public void parserHome(String url) throws HttpException, IOException;

	void deleteRealtimeAll();

	List<SchoolVO2> getRealtimeAll();

	List<String> getAllSchoolName();

	SchoolVO2 getSchoolVO(String school_id, String school_name, String clazz);

	List<SchoolVO2> getSchoolList(String clazz, Integer sort);

	List<RealtimeStudentVO> getStudentList(String clazz, Integer max_score,
			Integer min_score);
	
	void updateUserInfoProfile(UserVO userVO);

	UserVO findUserByMobile(String mobile);

	void updateMobile(String mobile, Long userId);

	ResetTokenVO queryResetToken(String email);

	void deleteAllResetToken(String email);

	String createNewToken(String email);

	ResetTokenVO findTokenById(String id);

	void resetPwd(ResetTokenVO token, String pwd);

	List<MenuVO> getUserMenu(List<Long> roleIdList);
	

}
